package com.my.study.permission.tree;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: Carlos
 * @create: 2021/01/11 20:30
 */
public class TreeMain {

    public static void main(String[] args) {
        String charList = "5 10,,,103xzy50 a,10's=w-s-1.02";

        //作为数字字符串的预备
        StringBuilder integer = new StringBuilder();
        List<Integer> numList = new ArrayList<>();

        for (int i = 0; i < charList.length(); i++) {
            System.out.println(i + " -> " + charList.charAt(i));
            //遍历字符串中每个字符时，若该字符为数字字符，则存入预备区
            if (Character.isDigit(charList.charAt(i))) {
                integer.append(charList.charAt(i));

                //避免字符串最后一位为数字而遗漏收集的情况
                if (i == charList.length() - 1) {
                    numList.add(Integer.parseInt(integer.toString()));
                }
            }else if (integer.length() > 0) {
                //读取到非数字字符，并且检查预备区是否为空
                numList.add(Integer.parseInt(integer.toString()));
                integer.delete(0, integer.length());
            }
        }
        //输出收集到的整型数字
        for (int each : numList) {
            System.out.println(each);
        }

//        List<MenuResponseVo> menuList = list();
//        long start = System.currentTimeMillis();
//        MenuResponseVo vo = TreeUtils.tree(menuList, MenuResponseVo::new);
//        System.out.println(System.currentTimeMillis() - start);
    }

    /**
     * 添加菜单
     */
    private static void addMenu() {
        /** 1. 校验*/
        // 1.查看是否已存在相同的菜单编码
        // 2.不存在，进入2，否则结束
        /** 2. 添加*/
        // 1.查询兄弟节点，得到当前最大的排序值
        // 2.将查询到的最大排序值+1并赋值给自己，添加到数据库
    }

    /**
     * 更新菜单
     */
    private static void updateMenu() {
        /** 1. 校验 */
        // 1.更新前，查询是否有相同的菜单编码
        // 2.存在，进入2，否则结束
        /** 2. 更新 */
        // 排序值不变，直接更新
    }

    /**
     * 删除菜单
     */
    private static void deleteMenu() {
        /** 1. 校验参数 */
        // 1.校验传入参数
        // 2.根据传入参数查询是否存在此菜单信息，存在，进入2，否则结束
        /** 2. 删除 */
        // 1.删除菜单
        // 2.重置菜单的排序值
    }

    /**
     * 移动菜单
     * 算法：
     * 1.找到(previous or next)菜单
     * 2.交换
     */
    private static void moveMenu() {
        /** 1. 校验参数*/
        // 1.校验待移动菜单id是否为空
        // 2.校验传入id是否为系统的菜单
        /** 2. 移动 */
        // 判断是否有兄弟节点，有则获取自己在兄弟节点里的位置信息，无则结束
        // 移动分为上移和下移
        /** 2.1 下移 */
        // 1.判断是否为最底部的菜单，是则结束，否则继续
        // 2.获取后临的兄弟菜单信息
        // 3.交换位置
        /** 2.2 上移 */
        // 1.判断是否为最顶部的菜单，是则结束，否则继续
        // 2.获取前临的兄弟菜单信息
        // 3.交换位置
    }



    private static List<MenuResponseVo> list () {
        List<MenuResponseVo> menuList = new ArrayList<>();
        MenuResponseVo vo1 = new MenuResponseVo();
        vo1.setId(1L);
        vo1.setName("人事处");
        vo1.setParentId(0L);
        vo1.setPosition(3);
        vo1.setIcon("icon-1");
        vo1.setLink("http://www.baidu.com");
        menuList.add(vo1);

        MenuResponseVo vo2 = new MenuResponseVo();
        vo2.setId(2L);
        vo2.setName("法规库");
        vo2.setParentId(0L);
        vo2.setPosition(2);
        vo2.setIcon("icon-2");
        vo2.setLink("http://www.baidu.com");
        menuList.add(vo2);

        MenuResponseVo vo3 = new MenuResponseVo();
        vo3.setId(3L);
        vo3.setName("人事处");
        vo3.setParentId(1L);
        vo3.setPosition(2);
        vo3.setIcon("icon-3");
        vo3.setLink("http://www.baidu.com");
        menuList.add(vo3);

        MenuResponseVo vo4 = new MenuResponseVo();
        vo4.setId(4L);
        vo4.setName("法规库");
        vo4.setParentId(2L);
        vo4.setPosition(1);
        vo4.setIcon("icon-4");
        vo4.setLink("http://www.baidu.com");
        menuList.add(vo4);

        MenuResponseVo vo5 = new MenuResponseVo();
        vo5.setId(5L);
        vo5.setName("人事处");
        vo5.setParentId(1L);
        vo5.setPosition(1);
        vo5.setIcon("icon-5");
        vo5.setLink("http://www.baidu.com");
        menuList.add(vo5);

        MenuResponseVo vo6 = new MenuResponseVo();
        vo6.setId(6L);
        vo6.setName("法规库");
        vo6.setParentId(2L);
        vo6.setPosition(2);
        vo6.setIcon("icon-6");
        vo6.setLink("http://www.baidu.com");
        menuList.add(vo6);

        return menuList;
    }

}
